home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / TheFinalBattle / Vorspann.AMOS / Vorspann.amosSourceCode
Encoding:
AMOS Source Code  |  1992-08-30  |  10.4 KB  |  412 lines

  1. Hide 
  2. Dim BANKFELD$(4),SH(14,6)
  3. Global BANK
  4. BANKSPACE=50000
  5. ALLESLOESCHEN
  6. Screen Open 0,128,8,2,0 : Screen Hide 0
  7. '
  8. Screen Open 2,320,56,4,0
  9. Curs Off : Flash Off : Pen 1 : Paper 0 : Cls 0
  10. Palette 0,0,0
  11. Gr Writing 0
  12. Screen Display 2,128,251,,
  13. '
  14. Load "Title.mus",3
  15. Erase 1 : Load "Sprites1.dat",1
  16. Music 1 : Wait 150
  17. Gosub ERDE
  18. Gosub BODENSTATION
  19. Gosub INVADE
  20. Erase 1 : Load "Sprites2.dat",1
  21. Gosub STADTZOOM
  22. Erase 1 : Load "Sprites3.dat",1
  23. Gosub STADT
  24. Gosub STADTDESTROYED
  25. Screen Close 0 : Screen Close 2
  26. ALLESLOESCHEN
  27. Erase 1
  28. Erase 3
  29. End 
  30. ERDE:
  31.   Wait Vbl : BANKLADEN["020Erde.pic"]
  32.   Unpack BANK To 1 : Screen Hide 1
  33.   Screen 0 : Get Palette 1 : Screen 1
  34.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  35.   Sprite 0,-40,-40,1
  36.   A$="L R0=2000; L R1=1; L R2=-110; L R3=20; "
  37.   A$=A$+"A: L R0=R0+R2; L R1=R1+R3; L R2=R2+1;"
  38.   A$=A$+"L X=R0/100+268+160-RA; L Y=R1/100+67; P; "
  39.   A$=A$+"I R2>100 J B; I R0>20000 J C; J A; "
  40.   A$=A$+"B: L R2=100; I R0>20000 J C; J A; "
  41.   A$=A$+"C: L R0=20000; J A;"
  42.   Channel 0 To Sprite 0
  43.   Amal 0,A$
  44.   A$="F RA=0 T 159; L X=X+1; N RA; "
  45.   Channel 2 To Screen Offset 1
  46.   Amal 2,A$
  47.   Double Buffer 
  48.   Bob 2,335,52,3
  49.   Bob 1,-20,-20,2
  50.   A$="L X=335; L Y=52; A: L X=X-1; P; I X>-20 J A; "
  51.   Channel 1 To Bob 1 : Amal 1,A$
  52.   Sprite 4,250,100,11
  53.   A$="F R0=0 To 200; N R0; "
  54.   A$=A$+" A 1,(6,5)(7,5)(8,5)(9,5)(10,20)(9,5)(8,5)(7,5)(6,5)(11,1); "
  55.   Channel 3 To Sprite 4
  56.   Amal 3,A$
  57.   A$="F R0=0 T 159; L X=X-1; P; L RA=159-R0; N R0; "
  58.   Fade 2 To 0 : Wait 35
  59.   Screen 2 : Screen To Front 2
  60.   Locate 0,2 : TEX["DER WELTRAUM - UNENDLICHE WEITEN"]
  61.   Fade 2,0,$55D,$FFF
  62.   Wait 183 : Amal On 0 : Wait 50
  63.   Fade 2 : Amal On 2 : Amal On 3 : Wait 32
  64.   Cls 0 : Locate 0,2 : TEX["WIR SCHREIBEN DAS JAHR 2038"]
  65.   Fade 2,0,$55D,$FFF
  66.   Wait 232 : Fade 2 : Wait 32 : Cls 0
  67.   Home : TEX["EINE GRUPPE WISSENSCHAFTLER VERL��T DIE"] : Print : Print 
  68.   TEX["ERDE, UM EINIGE GEN EXPERIMENTE IM"] : Print : Print 
  69.   TEX["WELTRAUM DURCHZUF�HREN."]
  70.   Fade 2,0,$55D,$FFF : Wait 32
  71.   Screen 1
  72.   Amal On 1
  73.   Amal 2,A$
  74.   Wait 50 : Amal On 2 : Wait 10 : Amal Off 0
  75.   Amal Off 3
  76.   Wait 260 : Screen 2 : Fade 2 : Wait 50
  77.   Screen 1 : Amal Off 1 : Bob Off 
  78.   Fade 3 : Wait 49
  79.   Amal Off 0 : Sprite Off 0 : Screen Close 1
  80. Return 
  81. '
  82. '
  83. BODENSTATION:
  84.   BANKLADEN["000Bodenstation.pic"]
  85.   Wait Vbl : Unpack BANK To 1 : Screen Hide 1
  86.   Screen 0 : Get Palette 1
  87.   Colour 18,$50
  88.   Screen 1
  89.   Double Buffer : Autoback 0
  90.   Bob Update Off 
  91.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  92.   Screen 2
  93.   Cls 0 : Home : Print : TEX["F�NF JAHRE SP�TER..."]
  94.   Screen 1
  95.   Fade 3 To 0
  96.   Degree 
  97.   X=0 : Y=0 : A=120 : R=30
  98.   W=0
  99.   Get Block 1,96,143,80,46
  100.   Sprite 1,268,200,76
  101.   AN=12
  102.   AN2=0
  103.   AN3=0
  104.   SP=68
  105.   Do 
  106.     If A=44 Then Colour 18,$BFB
  107.     If A=52 and W<246 Then Fade 10,,,,,,,,,,,,,,,,,,,$50
  108.     If W=220 Then Fade 4,,,$F88,$D77,$C66,$A55,$844,$633,$522,$311,$F50,$D30,$A10,$800
  109.     If W=222 or W=224 Then Dec SP
  110.     If W=226 Then Bob Off 2 : Bob Off 3 : Bob Off 4 : Bob Off 5 : Bob Off 6 : SP=0
  111.     If W=230 Then Fade 4,,,0,0,0,0,0,0,0,0,0,0,0,0
  112.     If W=246 or W=247
  113.       Ink 0 : Bar 0,96 To 95,123 : Bar 224,96 To 319,123
  114.       Bar 112,96 To 199,118
  115.       Paste Bob 104,96,77
  116.       Sprite Off 1 : Paste Bob 0,96,66 : Paste Bob 224,96,67
  117.     End If 
  118.     If W=248 Then Fade 1 To 0
  119.     Inc W
  120.     If W=160 or W=165 Then Inc SP
  121.     If W>170 and Rnd(10)=1 Then AN3=Min(AN3+1,5)
  122.     If W=20 or W=210 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
  123.     If W=195 or W=340 Then Screen 2 : Fade 2 : Screen 1
  124.     If W=358 Then Fade 3
  125.     If W=205 Then Screen 2 : Cls 0 : Home : TEX["VERSCHWINDEN DIE RAUMSCHIFFE"] : Screen 1
  126.     If W=206 Then Screen 2 : Print : Print : TEX["VON DEN BILDSCHIRMEN! NIEMAND"] : Screen 1
  127.     If W=207 Then Screen 2 : Print : Print : TEX["WEISS, WAS MIT DER CREW GESCHEHEN IST."] : Screen 1
  128.     If W=370 Then Exit 
  129.     AN=Min(AN,64)
  130.     Add AN,1,12 To 25-40*(SP=0)
  131.     Add AN2,1,0 To 1
  132.     Add A,4,0 To 356
  133.     Bob 1,232,148,AN
  134.     If SP>0
  135.       Bob 2,15,108,SP+AN2
  136.       Bob 3,37,108,SP+AN2
  137.       Bob 4,61,114,SP+1-AN2
  138.       Bob 5,83,114,SP+1-AN2
  139.       Bob 6,197,110,SP+4+AN2
  140.     End If 
  141.     Bob 7,40,144,78+AN3
  142.     Bob Draw 
  143.     If Timer<3 Then For AA=1 To 3-Timer : Wait Vbl : Next 
  144.     Screen Swap : Timer=0 : Wait Vbl 
  145.     Bob Clear 
  146.     Put Block 1
  147.     X=Sin(A-4)*30 : Y=Cos(A-4)*18
  148.     Ink 16 : Draw 134,166 To 134+X,166-Y
  149.     X=Sin(A-2)*30 : Y=Cos(A-2)*18
  150.     Ink 15 : Draw 134,166 To 134+X,166-Y
  151.     X=Sin(A)*30 : Y=Cos(A)*18
  152.     Ink 14 : Draw 134,166 To 134+X,166-Y
  153.   Loop 
  154.   Amal Off 
  155.   Sprite Off 
  156.   Bob Off 
  157.   Bob Update On 
  158.   Autoback 2
  159.   Screen Close 1
  160. Return 
  161. '
  162. INVADE:
  163.   BANKLADEN["000Erde.pic"]
  164.   Wait Vbl : Unpack BANK To 1 : Screen Hide 1
  165.   Screen Offset 1,160,0
  166.   Screen 0 : Get Palette 1 : Screen 1
  167.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  168.   Double Buffer 
  169.   Screen 1
  170.   Wait Vbl 
  171.   Fade 2 To 0 : Wait 33
  172.   Screen 2
  173.   Cls 0 : Home : TEX["IM JAHRE 2045 GREIFT EIN"] : Print : Print 
  174.   TEX["GIGANTISCHES RAUMSCHIFF DIE ERDE AN!"]
  175.   Fade 2,0,$55D,$FFF
  176.   Screen 1
  177.   X=3360 : Y=6400 : S=32
  178.   Set Bob 1,0,%11111,
  179.   Autoback 0
  180.   For A=0 To 129
  181.     Wait Vbl : Timer=0
  182.     Bob 1,X/32+50,Y/32,4
  183.     Bob 2,X/32,Y/32+40,5
  184.     T=Timer
  185.     Repeat 
  186.       Add X,S/2 : Add Y,-S
  187.       Dec T
  188.     Until T<1
  189.     If A>95 Then S=Max(S-1,1)
  190.   Next 
  191.   Put Bob 1
  192.   Put Bob 2
  193.   Bob Off 1 : Bob Off 2
  194.   X=2930 : Y=1460 : XX=X
  195.   For A=0 To 14
  196.     If A=1 or A=3 or A=6 or A=10 Then Add Y,20 : Add X,-30 : XX=X
  197.     SH(A,0)=1900+Rnd(150) : SH(A,1)=1700
  198.     SH(A,2)=XX : SH(A,3)=Y
  199.     SH(A,4)=-Rnd(15)-5 : SH(A,5)=Rnd(10)+20
  200.     SH(A,6)=Rnd(12)
  201.     Add XX,40
  202.   Next 
  203.   Bob Update Off 
  204.   AA=0
  205.   Repeat 
  206.     Bob Draw : Screen Swap 
  207.     Wait Vbl 
  208.     For A=0 To 14
  209.       If SH(A,6)=0
  210.         Bob A,SH(A,0)/10,SH(A,1)/10,84
  211.         Add SH(A,0),SH(A,4)
  212.         Add SH(A,1),SH(A,5)
  213.         If Abs(SH(A,2)-SH(A,0))<100 : SH(A,4)=(SH(A,2)-SH(A,0))/5 : End If 
  214.         If Abs(SH(A,3)-SH(A,1))<100 : SH(A,5)=(SH(A,3)-SH(A,1))/5 : End If 
  215.         If Abs(SH(A,2)-SH(A,0))>200 : Add SH(A,4),Sgn(SH(A,2)-SH(A,0)) : End If 
  216.         If Abs(SH(A,3)-SH(A,1))>200 : Add SH(A,5),Sgn(SH(A,3)-SH(A,1)) : End If 
  217.       Else 
  218.         Dec SH(A,6)
  219.       End If 
  220.     Next 
  221.     Inc AA
  222.     If AA=94
  223.       For A=0 To 14
  224.         SH(A,0)=SH(A,2) : SH(A,1)=SH(A,3)
  225.         Add SH(A,2),600 : Add SH(A,3),-950
  226.       Next 
  227.     End If 
  228.     If AA=110 Then Screen 2 : Fade 2 : Screen 1
  229.     If AA=130 Then Fade 3
  230.     Bob Clear 
  231.   Until AA=160
  232.   Bob Off 
  233.   Bob Update On 
  234.   Screen Close 1
  235. Return 
  236. '
  237. STADTZOOM:
  238.   BANKLADEN["000StadtZoom.pic"]
  239.   Wait Vbl : Unpack BANK To 1 : Screen Hide 1
  240.   Screen 0 : Get Palette 1 : Screen 1
  241.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  242.   Double Buffer 
  243.   Autoback 0
  244.   Screen 2
  245.   Cls 0 : Home : TEX["DIE ERDE KANN SICH"] : Print : Print 
  246.   TEX["NICHT VERTEIDIGEN!"]
  247.   Screen 1
  248.   Wait Vbl 
  249.   Fade 2 To 0
  250.   A=0 : AA=0
  251.   For AA=0 To 57
  252.     Add A,1,-10 To 10
  253.     Bob 1,185,79,1+Abs(A)
  254.     Wait 5
  255.     If AA=7 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
  256.     If AA=40 Then Screen 2 : Fade 2 : Screen 1
  257.     If AA=47 Then Fade 3
  258.   Next 
  259.   Bob Off 
  260.   Autoback 2
  261.   Screen Close 1
  262. Return 
  263. '
  264. STADT:
  265.   BANKLADEN["000Stadt1.pic"]
  266.   Wait Vbl : Unpack BANK To 1 : Screen Hide 1
  267.   Screen 0 : Get Palette 1 : Screen 1
  268.   Screen Display 1,128,40,,
  269.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  270.   Double Buffer 
  271.   Autoback 0
  272.   Screen 2
  273.   Cls 0 : Home : TEX["TAUSENDE RAUMSCHIFFE"] : Print : Print 
  274.   TEX["VERW�STEN DIE ST�DTE!"]
  275.   Screen 1
  276.   Wait Vbl 
  277.   Fade 2 To 0
  278.   For Y=200 To -150 Step -8
  279.     Timer=0
  280.     Bob 1,150-Y/2,Y,1
  281.     If Y=72 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
  282.     Wait Vbl 
  283.     If Timer<2 Then For AA=1 To 2-Timer : Wait Vbl : Next 
  284.   Next 
  285.   Wait 40
  286.   For Y=-17 To 119
  287.     Bob 1,270-Y/2,Y,2
  288.     Bob 2,230-Y/2,Y-40,2
  289.     Bob 3,250-Y/2,Y-20,2
  290.     Wait 2
  291.     If Y=70 Then Screen 2 : Fade 2 : Screen 1
  292.     If Y=90 Then Fade 3
  293.   Next 
  294.   Bob Off 
  295.   Autoback 2
  296.   Screen Close 1
  297. Return 
  298. '
  299. STADTDESTROYED:
  300.   BANKLADEN["000Stadt2.pic"]
  301.   Wait Vbl : Unpack BANK To 1 : Screen Hide 1
  302.   Screen 0 : Get Palette 1 : Screen 1
  303.   Screen Display 1,128,40,,
  304.   For A=0 To 31 : Colour A,0 : Next : Screen Show 1
  305.   Double Buffer 
  306.   Autoback 0
  307.   Screen 2
  308.   Cls 0 : Home : TEX["NACH MONATEN DES KRIEGES"] : Print : Print 
  309.   TEX["MUSS DIE ERDE AUFGEBEN!"]
  310.   Screen 1
  311.   Wait Vbl 
  312.   Fade 2 To 0
  313.   A1=2 : Y1=120 : X1=0 : EL1=0
  314.   A2=2 : Y2=120 : X2=0 : EL2=20
  315.   W=0
  316.   Repeat 
  317.     If EL1=0
  318.       Bob 1,125-X1,Y1,2+A1/2
  319.       Bob 2,140,Y1-(60-(Y1/2)),2+A1/2
  320.       Bob 3,155+X1,Y1,2+A1/2
  321.       Add Y1,-A1/10-1
  322.       Add X1,A1/18
  323.       A1=Min(A1+1,49)
  324.     Else 
  325.       Dec EL1
  326.     End If 
  327.     If EL2=0
  328.       Bob 4,125-X2,Y2,2+A2/2
  329.       Bob 5,140,Y2-(60-(Y2/2)),2+A2/2
  330.       Bob 6,155+X2,Y2,2+A2/2
  331.       Add Y2,-A2/10-1
  332.       Add X2,A2/18
  333.       A2=Min(A2+1,49)
  334.     Else 
  335.       Dec EL2
  336.     End If 
  337.     Wait Vbl 
  338.     Inc W
  339.     If W=5 Then Flash 2,"(800,1)(B30,1)(F60,1)(B30,1)" : Flash 17,"(FB2,1)(FD4,1)(FF8,1)(FD4,1)"
  340.     If W=20 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
  341.     If W=120 Then Screen 2 : Fade 2 : Screen 1
  342.     If W=139 Then Flash Off 
  343.     If W=140 Then Fade 3
  344.     If Y1<-36 Then A1=2 : Y1=120 : X1=0
  345.     If Y2<-36 Then A2=2 : Y2=120 : X2=0
  346.   Until W>160
  347.   Bob Off 
  348.   Autoback 2
  349.   Screen Close 1
  350. Return 
  351. '
  352. Procedure BANKLADEN[NAME$]
  353.   Shared BANKFELD$(),BANKSPACE
  354.   FILENAME$=Mid$(NAME$,4)
  355.   For A=0 To 4
  356.     If Mid$(BANKFELD$(A),4)=FILENAME$ Then BANK=A+11 : Pop Proc
  357.   Next 
  358.   If Exist(FILENAME$)=0 Then Boom : Pop Proc
  359.   Open In 1,FILENAME$ : LAENGE=Lof(1) : Close 1
  360.   For AA=0 To 4
  361.     GESAMMT=0
  362.     For A=0 To 4
  363.       Add GESAMMT,Length(A+11)
  364.     Next 
  365.     If GESAMMT+LAENGE<BANKSPACE Then Exit 
  366.     MXPRI=999
  367.     For A=0 To 4
  368.       PRI=Val(Left$(BANKFELD$(A),4))
  369.       If PRI<MXPRI Then MXPRI=PRI : DEL=A
  370.     Next 
  371.     Erase DEL+11
  372.   Next 
  373.   For A=0 To 4
  374.     If Length(A+11)=0 Then DEL=A : Exit 
  375.   Next 
  376.   If A=10
  377.     MXPRI=999
  378.     For A=0 To 4
  379.       PRI=Val(Left$(BANKFELD$(A),4))
  380.       If PRI<MXPRI
  381.         MXPRI=PRI : DEL=A
  382.       End If 
  383.     Next 
  384.     Erase DEL+11
  385.   End If 
  386.   Load FILENAME$,DEL+11
  387.   BANKFELD$(DEL)=NAME$
  388.   BANK=DEL+11
  389. End Proc
  390. Procedure BANKLOESCHEN[FILENAME$]
  391.   Shared BANKFELD$()
  392.   DEL=0
  393.   For A=0 To 4
  394.     If Mid$(BANKFELD$(A),4)=FILENAME$ Then DEL=A : Exit 
  395.   Next 
  396.   If A=5 Then Boom : Pop Proc
  397.   Erase DEL+11
  398.   BANKFELD$(DEL)="000"
  399. End Proc
  400. Procedure ALLESLOESCHEN
  401.   Shared BANKFELD$()
  402.   For A=0 To 4
  403.     Erase A+11
  404.     BANKFELD$(DEL)="000"
  405.   Next 
  406. End Proc
  407. Procedure TEX[T$]
  408.   Y=Y Curs*8+7 : X=160-Len(T$)*4
  409.   Ink 1,0 : Text X-1,Y-1,T$ : Text X,Y-1,T$ : Text X+1,Y-1,T$
  410.   Text X-1,Y,T$ : Text X+1,Y,T$ : Text X-1,Y+1,T$ : Text X,Y+1,T$
  411.   Text X+1,Y+1,T$ : Ink 2,0 : Text X,Y,T$
  412. End Proc